/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controlador;

import java.util.*;
import modelo.ICandidato;
import modelo.IEmpleado;
import modelo.personas;
import modelo.ICandidatoModel;
import vista.ICandidatoView;
/**
 *
 * @author LEONIC
 */
public class CandidatoController implements ICandidatoController {


    private ICandidatoModel model;
    private List<ICandidatoView> views=new ArrayList<ICandidatoView>();

    public void setup(ICandidatoModel model, List<ICandidatoView> views) {
        setModel(model);
        addViews(views);
        model.setController(this);

    }

    public void start() {
        for(ICandidatoView view:views)
            view.display();
    }

    private void addViews(List<ICandidatoView> views){
        for(ICandidatoView view:views)
            addView(view);
    }
    public void addView(ICandidatoView view) {
        view.setModel(model);
        view.setController(this);
        views.add(view);
    }

    public void removeView(ICandidatoView view) {
        views.remove(view);
    }

    public ICandidatoModel getModel() {
        return model;
    }

    public void setModel(ICandidatoModel model) {
        this.model=model;
    }

    public void nuevoCandidatoGesture(String dni, String nombre) {
        ICandidato candidato=new personas(dni,nombre);
        getModel().nuevoCandidato(candidato);
    }

    public void actualizaCandidatoGesture(String dni, String nombre) {
        ICandidato candidato=new personas(dni,nombre);
        getModel().actualizarCandidato(candidato);
    }

    public void borraCandidatoGesture(String dni) {
        ICandidato candidato=new personas(dni);
        getModel().eliminarCandidato(candidato);
    }

    public void ContratarCandidatoGesture(String dni,double salario,String rol,String usuario,String password) {
        IEmpleado candidato=new personas(dni,salario,rol,usuario,password);
        getModel().contratarCandidato(candidato);
    }



    public void fireDataModelChanged() {
        for (ICandidatoView view : views) {
            view.dataModelChanged();
        }
    }

    public List<ICandidatoView> getViews(){
        return this.views;
    }
}
